package mainService.data;

import java.net.InetAddress;
import java.util.HashMap;
import java.util.Set;

/**
 * Classe singleton che gestisce la mappa degli utenti connessi.
 * 
 * @author Mattia Grecchi, Daniel Procop
 * 
 */
public class UsersConnected {

	private HashMap<InetAddress, Utente> userMap;

	// as singleton
	private UsersConnected() {
		this.userMap = new HashMap<InetAddress, Utente>();
	}

	private static UsersConnected usersConnected = new UsersConnected();

	/**
	 * 
	 * @return l'oggetto singleton
	 */
	public static UsersConnected getUsersConnected() {
		return usersConnected;
	}

	// as class

	/**
	 * aggiunge un utente alla mappa
	 * @param address
	 * @param utente
	 */
	public void addUser(InetAddress address, Utente utente) {
		userMap.put(address, utente);
	}

	/**
	 * vede la presenza di un ip nella mappa
	 * @param address
	 * @return true oppure false
	 */
	public boolean ipPresente(InetAddress address) {
		return userMap.containsKey(address);
	}

	/**
	 * toglie un utente dalla mappa
	 * @param address dell'utente da togliere
	 * @return
	 */
	public boolean removeUsers(InetAddress address) {
		userMap.remove(address);
		return true;
	}

	/**
	 * restituisce l'utente
	 * @param address
	 * @return
	 */
	public Utente getUtente(InetAddress address) {
		return userMap.get(address);
	}

	@Override
	public String toString() {
		String risulato = new String();
		Set<InetAddress> chiavi = userMap.keySet();
		for (InetAddress inetAddress : chiavi) {
			risulato += inetAddress + "\t"
					+ userMap.get(inetAddress).getRuolo() + "\n";
		}
		return risulato;
	}
}
